package com.example.demo.shuatiban.zuocheng;

/**
 * @author xujm
 * @version V2.4
 * 一个数组中只有B，G 两个字符，
 * 想让G放在最左边  B放在最右边
 * 并且每次只能交换相邻的两个字符，求要交换几次
 *
 * @since 2.4.0 2022/1/31 11:23
 */
public class Arr_数组中BG交换 {


    public static int change(char [] arr){

        int i=0,j=0;
        int count = 0;
        while(i<=j && i<arr.length && j < arr.length){

            if(arr[i] == 'G' && arr[j] == 'G'){
                i++;
                j++;
            }else if(arr[j] == 'G'){
                swap(arr, i, j);
                count = count+j-i;
                j++;
                i++;
            }else{
                j++;
            }
        }
        return count;
    }

    public static void swap(char [] arr, int i ,int j){
        char temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    public static void main(String[] args) {
        char []  arr= {'G','B','G','B','G'};
        System.out.println(change(arr));
    }



}
